//
//  EXT+UIImage.swift
//  WB25
//
//  Created by HM on 2017/6/29.
//  Copyright © 2017年 itheima. All rights reserved.
//

import UIKit
/*
    - 通过代码方式来解决图片拉伸问题
 */
extension UIImage {
    // 通过class 来修饰类方法
    class func resizableImage(named:String) -> UIImage{
        // 图片
        let image = UIImage(named: named)!
        // 设置端盖的值
        let top = image.size.height * 0.5
        let left = image.size.width * 0.5
        let bottom = image.size.height * 0.5
        let right = image.size.width * 0.5
        let edgeInsets =  UIEdgeInsetsMake(top, left, bottom, right)
        // 拉伸图片
        let newImage = image.resizableImage(withCapInsets: edgeInsets)
        return newImage
    }
}

extension UIImage{
    //MARK: - 截屏方法
    class func getScreenSnap() -> UIImage?{
        // 截取主屏幕的内容
        let window = UIApplication.shared.keyWindow!
        // 上下文
        // 开启上下文
        // 第二个参数为 透明开关
        // 截屏机型 传入0 系统帮我们识别机型
        UIGraphicsBeginImageContextWithOptions(window.bounds.size, false, 0)
        // 将内容渲染到上下文中
        window.drawHierarchy(in: window.bounds, afterScreenUpdates: false)
        // 从上下文获取图片
        let image = UIGraphicsGetImageFromCurrentImageContext()
        // 关闭上下文
        UIGraphicsEndImageContext()
        
        let data =  UIImagePNGRepresentation(image!)!
        
        let nsD = NSData.init(data: data)
        nsD.write(toFile: "/Users/xiele/Desktop/haha.png", atomically: true)
        
        
        return image
    }
    
    // 等比例压缩压缩图片(如果图片宽度大于400 就需要等比例压缩)
    func dealImageScale(maxWidth: CGFloat) -> UIImage{
        // 获取下图片的宽和高
        let imageW = self.size.width
        let imageH = self.size.height
        // 如果小于maxWidth 直接返回
        if imageW < maxWidth {
            return self
        }
        
        // 反之 需要做等比例压缩
        /*
         1200      400
         600       x  = (400*600)/1200
         */
        // 计算压缩后的图片的高度
        let maxH = (maxWidth * imageH)/imageW
        
        // 使用上下文
        // 01 开启上下文
        UIGraphicsBeginImageContext(CGSize(width: maxWidth, height: maxH))
        // 将图片渲染到上下文中
        self.draw(in: CGRect(x: 0, y: 0, width: maxWidth, height: maxH))
        // 通过上下文获取图片
        let result = UIGraphicsGetImageFromCurrentImageContext()!
        // 关闭上下文
        UIGraphicsEndImageContext()
        return result
    }
}
